简介
参考:
- http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/overview.html;
- https://www.tensorflow.org/guide/datasets;
- https://juejin.im/post/5b345a49f265da599c561b25
- https://www.cnblogs.com/wuzhitj/p/6648641.html
说明
- tensorflow 实质是一个编程系统,计算框架。
- 其基于图(Graph)实现,将所有计算流程存储成有向图
- 构建会话(Session)来分配内存、优化迭代,执行图的所有计算过程
- 其输入为张量(tensor)代表数据;其计算过程通过迭代变量(Variable)实现【展现方式】
- 图中用节点(Operation)计算。节点的具体实现是在GPU、CPU上。而一个点点往往对应一个或多个张量、或者变量、或者一个计算流程【实现流程】
- 通过占位符来接收不同的外部输入【类似以字典的格式传参】
注意:
- 计算图只保存数据的输入和计算流程,列出了计算步骤,并不包含输出结果
- 会话对象包含指向全局图的指针,则节点创建在会话前后都无所谓。而sess.run()得到返回节点时,才会执行所有计算(类似spark中间的流程只是存储成计算方法, 到最后结果时才会去计算从而节约计算空间)
- 中间调用sess.run()的次数越少越好,对输出不同结果,最好在一次会话中进行(理由同上节约空间)
- 占位符在定义的时候需要定义输入数据的格式,以 输入的占位符名:传入的参数值 格式传参
- 给变量赋值的方法有两种:初始化器和tf.assign() 【应该用初始化器等方便些】
计算流程
- 输入输入张量、真实值和输出的结果
- 定义变量、确定计算方法,构建计算图节点
- 确定一个损失函数,以评估计算方法和真实结果
- 选择一个优化器根据损失函数迭代参数
- 新建会话,并执行输出结果的计算流程